package pe.com.chilis.delivery.negocio;

import java.util.ArrayList;
import pe.com.chilis.delivery.dao.implementacion.ImplDespachadorZonaReparto;
import pe.com.chilis.delivery.dao.interfaz.ZonaRepartoDAO;
import pe.com.chilis.delivery.beans.Departamento;
import pe.com.chilis.delivery.beans.Distrito;
import pe.com.chilis.delivery.beans.Provincia;
import pe.com.chilis.delivery.beans.ZonaReparto;
import pe.com.chilis.delivery.excepcion.ExcepcionDatos;
import pe.com.chilis.delivery.excepcion.ExcepcionNegocio;
import pe.com.chilis.delivery.log.UtilLog;

public class NZonaReparto {

	ZonaRepartoDAO despachadorZonaReparto = new ImplDespachadorZonaReparto();

	public int registrarZonaReparto(ZonaReparto zonaReparto) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.registrarZonaReparto(zonaReparto);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}

	public void actualizarZonaReparto(ZonaReparto zonaReparto) throws ExcepcionNegocio {
		try {
			despachadorZonaReparto.actualizarZonaReparto(zonaReparto);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}

	public void eliminarZonaReparto(ZonaReparto zonaReparto) throws ExcepcionNegocio {
		try {
			despachadorZonaReparto.eliminarZonaReparto(zonaReparto);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}

	public ArrayList<ZonaReparto> obtenerZonasReparto(ZonaReparto zonaReparto) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.obtenerZonasReparto(zonaReparto);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}
	
	public ZonaReparto obtenerZonaRepartoPorId(int idZonaReparto) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.obtenerZonaRepartoPorId(idZonaReparto);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}

	public ArrayList<Departamento> cargarDepartamentos () throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.listarDepartamentos();
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}
	
	public ArrayList<Provincia> cargarProvincias (Departamento departamento) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.listarProvinciasPorDepartamento(departamento);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}
	
	public ArrayList<Distrito> cargarDistritosSinAsociar(Provincia provincia) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.listarDistritosSinAsociarPorProvincia(provincia);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}

	public ArrayList<Distrito> cargarDistritosAsociados(Distrito distrito) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.listarDistritosAsociadosPorProvincia(distrito);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}

	public ArrayList<Distrito> cargarDistritosAsociadosPorZonaReparto(ZonaReparto zonaReparto) throws ExcepcionNegocio {
		try {
			return despachadorZonaReparto.listarDistritosAsociadosPorZonaReparto(zonaReparto);
		} catch (ExcepcionDatos excepcion) {
			UtilLog.imprimirExcepcion(excepcion);
			throw new ExcepcionNegocio(excepcion.getMessage());
		}
	}
}